/*
    This file is part of qmessages.
    Copyright (C) 2010  Jason Newton <nevion@gmail.com>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as
    published by the Free Software Foundation, either version 3 of the
    License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
#include "ClientController.h"
#include <QDebug>
#include <QVariant>
#include "MessageExtensions.h"

#include <iostream>

using std::cout;
using std::endl;
using namespace qmsgio;

ClientController::ClientController(QIODevice *transport, QObject *parent):QMessageEndpoint(transport, parent){
    timer.reset(new QTimer(this));
    timer->setInterval(500);
    timer->setSingleShot(true);
    connect(timer.get(), SIGNAL(timeout()), this, SLOT(onTimeout()));
    timer->start();
}

ClientController::~ClientController(){
    timer.reset();
    qDebug()<<"cc dtor";
}

bool ClientController::onReceiveMsg(QMessage *msg){
    if(QMessageEndpoint::onReceiveMsg(msg)){
        return true;
    }else if(typeid(*msg) == typeid(ExampleReply)){
        ExampleReply *reply = (ExampleReply *) msg;
        cout<<"Client received: "<<reply->reply_msg.data()<<endl;
        timer->start();//re-enable timer
        return true;
    }else{
        return false;
    }
}

void ClientController::onTimeout(){
    ExampleRequest request;
    request.request_msg = QByteArray("can haz plz?");
    sendMsg(&request);
}
